<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>用户登录切换(input复用问题)</title>
    <script src="../lib/vue_v2.6.14.js"></script>
  </head>
  <body>
    <div id="app">
      <!-- 问题描述：此时 input 会复用，因为 Vue 在进行 DOM 渲染时，出于性能考虑，会尽可能的复用已经存在的元素，而不是重新创建新的元素 -->
      <!-- 解决方案：给 input 加一个 key 属性，保证 key 不同即可解决 input 复用问题 -->
      <span v-if="showUserName">
        <label for="userName">用户姓名</label>
        <input type="text" id="userName" placeholder="用户姓名" key="userName" />
      </span>
      <span v-else>
        <label for="userEmail">用户邮箱</label>
        <input type="text" id="userEmail" placeholder="用户邮箱" key="userEmail" />
      </span>
      <button @click="showUserName = !showUserName">切换类型</button>
    </div>

    <script>
      const vm = new Vue({
        el: '#app',
        data: {
          showUserName: true
        }
      })
    </script>
  </body>
</html>
